//
//  TFPageControl.h
//  TFFoundation
//
//  Created by Summer on 2017/12/26.
//

#import <UIKit/UIKit.h>

@class TFPageControl;

/**
 每个page对应的view编辑的block
 
 @param pageView 每个page对应的view
 @param index 索引
 @param update 是否更新约束
 */
typedef void (^TFPageControlPageViewEditBlock)(TFPageControl * __nonnull pageControl, UIView * __nonnull pageView, NSInteger index, BOOL update);

/**
 选中某个pageView调用此block

 @param lastSelectedPageView 上一个选中的pageView
 @param currentSelectedPageView 当前选中的pageView
 */
typedef void (^TFPageControlPageViewDidSelectedViewBlock)(TFPageControl * __nonnull pageControl, UIView * __nonnull lastSelectedPageView, UIView * __nonnull currentSelectedPageView);

/**
 TFPageControl样式
 */
typedef NS_ENUM(NSUInteger, TFPageControlStyle) {
    /**
     TFPageControl样式--类似系统的小圆点
     */
    TFPageControlStyleSystem,
    /**
     TFPageControl样式--长方形
     */
    TFPageControlStyleRectangle,
};

/**
 TFPageControl
 */
@interface TFPageControl : UIControl

/**
 通过样式初始化一个TFPageControl

 @param style 样式
 @return TFPageControl
 */
+ (nonnull instancetype)pageControlWithStyle:(TFPageControlStyle)style;

/**
 通过样式初始化一个TFPageControl

 @param style 样式
 @return TFPageControl
 */
- (nonnull instancetype)initWithStyle:(TFPageControlStyle)style;

/**
 样式
 */
@property (nonatomic, assign) TFPageControlStyle style;

/**
 每个page对应的view编辑的block，可通过这个block编辑每页对应的view，比如自定义大小等等，当设置此block的时候，大小需要在block中自己去确定
 @warning 不可通过此方法修改view的背景色，view的背景色由pageIndicatorTintColor和currentPageIndicatorTintColor两个属性确定
 */
@property (nullable, nonatomic, copy) TFPageControlPageViewEditBlock pageViewEditBlock;

/**
 选中的时候调用此block，可用来设置pageView从选中到取消选中切换时的UI
 */
@property (nullable, nonatomic, copy) TFPageControlPageViewDidSelectedViewBlock pageDidSelectedBlock;

/**
 每个pageView的间距
 */
@property (nonatomic, assign) CGFloat pageViewSpace;

/**
 总页数
 */
@property (nonatomic, assign) NSInteger numberOfPages;

/**
 当前页
 */
@property (nonatomic, assign) NSInteger currentPage;

/**
 单页时是否隐藏，默认YES
 */
@property (nonatomic, assign) BOOL hidesForSinglePage;

/**
 页数指示器填充色，默认白色加0.2的透明度
 */
@property(nullable, nonatomic,strong) UIColor *pageIndicatorTintColor;

/**
 当前页填充色，默认白色
 */
@property(nullable, nonatomic,strong) UIColor *currentPageIndicatorTintColor;

@end
